package com.icarsaas.saas.tenant.system.repository;


import java.util.List;

import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.icarsaas.saas.common.constant.StatusConst;
import com.icarsaas.saas.component.base.MyBaseRepository;
import com.icarsaas.saas.component.base.MyBaseRepositoryImpl;
import com.icarsaas.saas.tenant.system.model.Dept;

public interface DeptRepository extends DeptRepositoryCustom, BaseRepository<Dept, Long> {

    /**
     * 查找多个部门
     * @param ids id列表
     * @return 部门列表
     */
    public List<Dept> findByIdIn(List<Long> ids);

    /**
     * 获取排序最大值
     * @param pid 父部门ID
     * @return 最大值
     */
    @Query("select max(sort) from Menu m where m.pid = ?1 and m.status <> " + StatusConst.DELETE)
    public Integer findSortMax(long pid);

    /**
     * 根据父ID查找子孙部门
     * @param pids pid列表
     * @param status 数据状态
     * @return 部门列表
     */
    public List<Dept> findByPidsLikeAndStatus(String pids, Byte status);

    /**
     * 根据父级部门ID获取本级全部部门
     * @param sort 排序对象
     * @param pid 父部门ID
     * @param notId 需要排除的部门ID
     * @return 部门列表
     */
    public List<Dept> findByPidAndIdNot(Sort sort, long pid, long notId);
}

/* 自定义接口
 */
interface DeptRepositoryCustom extends MyBaseRepository<Dept, String> {

}
@Repository
class DeptRepositoryImpl extends MyBaseRepositoryImpl<Dept, String> implements DeptRepositoryCustom {
	
}

